package javaman.servlet;

import java.io.IOException;

import javaman.gestor.GestorCategoria;
import javaman.gestor.GestorProfesor;
import javaman.gestor.GestorPublicacion;
import javaman.modelo.Categoria;
import javaman.modelo.ProfesorCategoria;
import javaman.modelo.Publicacion;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class RegistrarPublicacionServlet
 */
public class RegistrarPublicacionServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	GestorProfesor gestorProfesor = new GestorProfesor();
	GestorCategoria gestorCategoria = new GestorCategoria();  
	GestorPublicacion gestorPublicacion = new GestorPublicacion();
	
    /**
     * @see HttpServlet#HttpServlet()
     */
    public RegistrarPublicacionServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("RegistrarPublicacionServlet post");
		String destino = "/listadoPublicacion.jsp";
		
		String accion = request.getParameter("accion");
		String nombreProfesor = request.getParameter("nombreProfesor");
		String perfil = request.getParameter("perfil");
		String texto = request.getParameter("texto");
		String idprofesor = request.getParameter("idprofesor");
		String idpaquete = request.getParameter("idpaquete");
		String estado = request.getParameter("estado");
		
		System.out.println("accion "+accion);
		System.out.println("nombreProfesor "+nombreProfesor);
		System.out.println("perfil "+perfil);
		System.out.println("texto "+texto);
		System.out.println("idprofesor "+idprofesor);
		System.out.println("idpaquete "+idpaquete);
		System.out.println("estado "+estado);
		
		
		Publicacion publicacion = new Publicacion();
		publicacion.setIdpaquete(Integer.parseInt(idpaquete));
		publicacion.setIdprofesor(Integer.parseInt(idprofesor));
		publicacion.setTexto(texto);
		
		ProfesorCategoria profesorCategoria[] = gestorProfesor.buscarCategoriasByProfesor(Integer.parseInt(idprofesor));
		Categoria categorias[] = null;
		if(profesorCategoria!= null) {
			categorias = new Categoria[profesorCategoria.length];
			for(int i=0;i<profesorCategoria.length;i++) {
				categorias[i] = gestorCategoria.buscarCategoriasById(profesorCategoria[i].getIdcategoria());
				
			}
		}
		
		String resultado = "OK";
		
		if(accion.equals("insertar")) {
			
			resultado = gestorPublicacion.registrarPublicacion(publicacion);
			
			if(!resultado.equals("OK")) {
				destino = "/formularioPublicacion.jsp";
				
				request.setAttribute("arrPaquete",gestorPublicacion.obtenerPaquetes());
				request.setAttribute("idprofesor",publicacion.getIdprofesor());
				request.setAttribute("texto",publicacion.getTexto());
				request.setAttribute("idpaquete",publicacion.getIdpaquete());
				request.setAttribute("nombreProfesor",nombreProfesor);
				request.setAttribute("perfil",perfil);
				request.setAttribute("estado",estado);
				request.setAttribute("arrCategorias",categorias);
				request.setAttribute("accion",accion);
				request.setAttribute("resultado", resultado);
			} else if(resultado.equals("OK")) {
				Publicacion[] publicaciones = gestorPublicacion.listarPubliacionesPorProfesor(Integer.parseInt(idprofesor));
				request.setAttribute("idprofesor",idprofesor);
				request.setAttribute("nombreProfesor",nombreProfesor);
				request.setAttribute("arrListado",publicaciones);
				request.setAttribute("resultado", "Se registro correctamente la publicacion");
			} 
			
			
		}else if (accion.equals("modificar")) {
			
			String idpublicacion = request.getParameter("idpublicacion");
			
			publicacion.setIdpublicacion(Integer.parseInt(idpublicacion));
			
			Publicacion aux =gestorPublicacion.obtenerPublicacionById(publicacion.getIdpublicacion());
			
			publicacion.setIdestado(aux.getIdestado());
			publicacion.setFechapublicacion(aux.getFechapublicacion());
			
			resultado = gestorPublicacion.modificarPublicacion(publicacion);
			
			if(!resultado.equals("OK")) {
				destino = "/formularioPublicacion.jsp";
				request.setAttribute("idpublicacion",idpublicacion);
				request.setAttribute("arrPaquete",gestorPublicacion.obtenerPaquetes());
				request.setAttribute("idprofesor",publicacion.getIdprofesor());
				request.setAttribute("texto",publicacion.getTexto());
				request.setAttribute("idpaquete",publicacion.getIdpaquete());
				request.setAttribute("nombreProfesor",nombreProfesor);
				request.setAttribute("perfil",perfil);
				request.setAttribute("estado",estado);
				request.setAttribute("arrCategorias",categorias);
				request.setAttribute("accion",accion);
				request.setAttribute("resultado", resultado);
			}else if(resultado.equals("OK")) {
				Publicacion[] publicaciones = gestorPublicacion.listarPubliacionesPorProfesor(Integer.parseInt(idprofesor));
				request.setAttribute("idprofesor",idprofesor);
				request.setAttribute("nombreProfesor",nombreProfesor);
				request.setAttribute("arrListado",publicaciones);
				request.setAttribute("resultado", "Se modifico correctamente la publicacion");
			} 
			
		}
		
	    getServletContext().getRequestDispatcher(destino).forward(request, response);
	
	}

}
